home *** CD-ROM | disk | FTP | other *** search
/ Internet 53 / INTERNET53.iso / mac / SOFTWARE / MAC / MULTIMEDIA / SOUNDEFFECTS / SOUNDEFFECTS-092.HQX / SoundEffects 0.9.2 ƒ / SoundEffects Developer’s Kit / EmptyEffect ƒ / EmptySettings.c < prev    next >
C/C++ Source or Header  |  1994-11-19  |  2KB  |  93 lines

  1. #include "Glue.h"
  2. #include "Empty.h"
  3. #include "ModSetups.h"
  4.  
  5. #define    kNumDialogItems    1
  6.  
  7.  
  8. pascal OSErr settings(ModParamsPtr modInfo, GluePtr glue, ModSettingsHandle *prefs)
  9. {
  10.     ItemInfoHandle    myItemInfo;
  11.     unsigned long    myParamOne;
  12.     short            myParamTwo;
  13.     OSErr            error;
  14.     
  15.     
  16.     // load the last used settings.
  17.     
  18.     error = GetModSettings(modInfo, glue, prefs);
  19.     if (error)
  20.         return error;
  21.     
  22.     myParamOne = (**prefs)->paramOne;
  23.     myParamTwo = (**prefs)->paramTwo;
  24.     DisposHandle((Handle)*prefs);
  25.     *prefs = 0L;
  26.     
  27.     
  28.     // set up and show the settings dialog.
  29.     
  30.     myItemInfo = (ItemInfoHandle)NewHandleClear(sizeof(ItemInfoRec) * kNumDialogItems);
  31.     if (myItemInfo == 0L)
  32.         return kModNotEnoughMemory;
  33.     
  34.     (*myItemInfo)[0].type = type_ignore;
  35.     (*myItemInfo)[0].param = 0L;
  36.     
  37.     error = (*glue->ModDoSettingsDialog)(modInfo, myItemInfo, false, 0L, 0L, 0L);
  38.     DisposHandle((Handle)myItemInfo);
  39.     if (error)
  40.         return error;    
  41.     
  42.     
  43.     // save the new settings in the *prefs handle.
  44.     
  45.     *prefs = (ModSettingsHandle)NewHandle(sizeof(ModSettingsRec));
  46.     if (*prefs)
  47.     {
  48.         (**prefs)->paramOne = myParamOne;
  49.         (**prefs)->paramTwo = myParamTwo;
  50.         
  51.         
  52.         error = (*glue->SaveEffectSettings)(kModSignature, prefs);
  53.         
  54.         // we must not dispose of the handle, since the ‘effect’ routine may be called
  55.         // immediately after us, and it’ll need it. If the handle  is not needed, it
  56.         // will be automatically disposed of.
  57.     }
  58.     else
  59.         return kModNotEnoughMemory;
  60.     
  61.     return kModNoError;
  62. }
  63.  
  64.  
  65. pascal OSErr GetModSettings(ModParamsPtr modInfo, GluePtr glue, ModSettingsHandle *prefs)
  66. {
  67.     // this routine loads the settings. If no settings can be found, but the
  68.     // module requires them, it has to store default settings in a new handle.
  69.     //
  70.     // If the module doesn’t require any parameters, this routine can just return.
  71.     
  72.     OSErr    error;
  73.     
  74.     error = (*glue->LoadEffectSettings)(kModSignature, prefs);
  75.     if (error || *prefs == 0L)
  76.     {
  77.         *prefs = (ModSettingsHandle)NewHandle(sizeof(ModSettingsRec));
  78.         
  79.         if (*prefs)
  80.         {
  81.             // Set the default settings.
  82.             
  83.             (**prefs)->paramOne = 1L;
  84.             (**prefs)->paramTwo = 2;
  85.             
  86.             error = kModNoError;
  87.         }
  88.         else
  89.             error = kModNotEnoughMemory;
  90.     }
  91.     
  92.     return error;
  93. }